package com.sxpi.zixun.service.adminuser;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sxpi.zixun.bo.AdminUserBo;
import com.sxpi.zixun.pojo.AdminUser;
import com.sxpi.zixun.service.BaseService;
import com.sxpi.zixun.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: 董伟豪
 * @Date: 2022/8/24 12:31
 */
public interface IAdminUserService extends IService<AdminUser>, BaseService {

    /**
     * 登录
     * @param loginVo
     * @return
     */
    AdminUser login(LoginVo loginVo);

    /**
     * 保存&修改后台用户管理
     * @param adminUserRegVo
     * @return
     */
    AdminUserBo saveUpdateAdminUser(AdminUserRegVo adminUserRegVo);

    /**
     * 查询后台用户管理列表信息并分页
     * @param adminUserVo
     * @return
     */
    IPage<AdminUserBo> findAdminUserPage(AdminUserVo adminUserVo);

    /**
     * 查询用户对应的权限信息
     * @param userId
     * @return
     */
    List<String> findByUserPermission(Long userId);

    /**
     * 根据用户id查询角色Ids
     * @param userId
     * @return
     */
    List<Long> findByUserRikeIds(Long userId);

    /**
     * 根据后台用户管理id删除后台用户管理
     * @param aLong
     * @return
     */
    int deleteAdminUserById(Long aLong);

    /**
     * 状态更新
     * @param adminUserUpdateVo
     * @return
     */
    Boolean updateAdminUser(AdminUserUpdateVo adminUserUpdateVo);

    /**
     * 根据后台用户管理ids批量删除后台用户管理
     * @param batchIds
     * @return
     */
    Boolean deleteBatchAdminUser(String batchIds);

    /**
     * 根据用户id查询角色信息
     * @param userId
     * @return
     */
    List<String> getRoleNames(Long userId);

    /**
     * 给用户绑定角色
     * @param userId
     * @param roleId
     * @return 保存成功的时候,返回记录数（myBatis的语法）
     */
    int saveUserRole(Long userId, Long roleId);

    /**
     * 给用户解绑角色
     * @param userId
     * @param roleId
     * @return 保存成功的时候,返回记录数（myBatis的语法）
     */
    int deleteUserRole(Long userId,Long roleId);
}
